package com.tang.reggie.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tang.reggie.common.R;
import com.tang.reggie.dto.DishDto;
import com.tang.reggie.pojo.Dish;
import com.tang.reggie.service.DishService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@Slf4j
@RequestMapping("/dish")
public class DishController {

    @Autowired
    private DishService dishService;

    /**
     * 新增功能
     * @param dishDto
     * @return
     */
    @PostMapping
    public R save(@RequestBody DishDto dishDto){
        log.info("菜品模块：新增功能--dishDto={}",dishDto);
        dishService.saveWithFlavors(dishDto);
        return R.success("菜品新增成功");
    }


    /**
     * 分页查询菜品和对应的口味表信息
     * @param page
     * @param pageSize
     * @param name
     * @return
     */
    @GetMapping("/page")
    public R page(int page,int pageSize,String name){
        log.info("菜品模块：列表展示功能");
        Page<Dish> pageInfo=dishService.findDishWithCategoryName(page,pageSize,name);
        return R.success(pageInfo);
    }

    /**
     * 修改回显
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public R selectById(@PathVariable Long id){
        DishDto dishDto=dishService.selectById(id);
        return R.success(dishDto);
    }

    /**
     * 修改
     * @param dishDto
     * @return
     */
    @PutMapping
    public R update(@RequestBody DishDto dishDto){
        dishService.updateWithDishFlavors(dishDto);
        return R.success("菜品修改成功");
    }


    /**
     * 删除
     * @param ids
     * @return
     */
    @DeleteMapping
    public R delete(@RequestParam("ids") Long[] ids){
        dishService.delete(ids);
        return R.success("菜品删除成功");
    }


    /**
     * 修改状态
     * @param status
     * @param ids
     * @return
     */
    @PostMapping("/status/{status}")
    public R updateByStatus(@PathVariable int status,@RequestParam("ids") Long[] ids){
        dishService.updateStatus(status,ids);

        return R.success("设置成功");
    }

    /**
     * 根据套餐条件查询出当前套餐的菜品
     * @param dishDto
     * @return
     */
    @GetMapping("/list")
    public R list(DishDto dishDto){
        List<DishDto> dishDtoList= dishService.getByCategory(dishDto);
        return R.success(dishDtoList);
    }

}
